// Path  windows & posix
// path模块在不同的操作系统是有差异的(windows | posix)
/*
posix（Portable Operating System Interface of UNIX）
    posix表示可移植操作系统接口，也就是定义了一套标准，遵守这套标准的操作系统有(unix,like unix,linux,macOs,windows wsl)，为什么要定义这套标准，
        比如在Linux系统启动一个进程需要调用fork函数,在windows启动一个进程需要调用creatprocess函数，这样就会有问题，
        比如我在linux写好了代码，需要移植到windows发现函数不统一，posix标准的出现就是为了解决这个问题。
    Windows 并没有完全遵循 POSIX 标准。Windows 在设计上采用了不同于 POSIX 的路径表示方法。
    在 Windows 系统中，路径使用反斜杠（\）作为路径分隔符。这与 POSIX 系统使用的正斜杠（/）是不同的。这是 Windows 系统的历史原因所致，早期的 Windows 操作系统采用了不同的设计选择。
*/
const path = require('node:path')
// 1、basename  返回给的路径的最后一部分
console.log(path.basename('/foo/bar/ssr/xx.html'));  // xx.html
// 我们写的正斜杠 / ，输出反斜杠 \  反斜杠需要转移  \\
console.log(path.basename('\\foo\\bar\\ssr\\xx.html'));  // xx.html
// windows系统兼容正斜杠的写法
// posix处理不了windows的路径
// console.log(path.posix.basename('\\foo\\bar\\ssr\\xx.html'));  // 不行
// mac电脑上处理windows上的路径
// console.log(path.win32.basename('\\foo\\bar\\ssr\\xx.html'));

// 2、dirname 返回路径的目录名
console.log(path.dirname('F:\\project\\foo\\bar\\ssr\\xx.html'));   // F:\\project\\foo\\bar\\ssr

// 3、extname 返回路径的扩展名  后缀名
console.log(path.dirname('F:\\project\\foo\\bar\\ssr\\xx.html'));   // .html  返回是带. 的，如果没有. 返回空字符串 ，如果多个点 ，返回最后一个

// 4、path.join() 拼接路径
console.log(path.join('/a', '/b', '/c', '../')); // 可以带操作符

// 5、path.resolve() 解析路径，返回的是绝对路径
console.log(path.resolve('/a', '/b', '/c'));   // 如果都是绝对路径，返回最后一个 F:\c
console.log(path.resolve('./test.js'));   // 如果只有一个相对路径，返回当前文件目录的绝对路径
console.log(path.resolve(__dirname, './test.js'));   // 如果一个绝对路径，和一个相对路径，返回绝对路径

// 6、path.parse() 和 path.format() 
// path.parse() 解析路径，返回一个对象
// path.format() 将一个对象解析成路径
console.log(path.parse('/home/user/dir/file.txt'));
    /*
        返回：
        {
            root: '/',   // 根目录
            dir: '/home/user/dir',  // 目录
            base: 'file.txt',     // 文件
            ext: '.txt',        // 后缀
            name: 'file'       // 文件名
        }
    */
console.log(path.format({
    root: '/',   
    dir: '/home/user/dir', 
    base: 'file.txt',    
    ext: '.txt',   
    name: 'file'   
}));

// 7、path.seq 
// 根据操作系统的不一样返回分隔符的 
// windows系统是 反斜杠 \
// poxis系统是 正斜杠 /
console.log(path.seq);